如果熟悉Spring测试框架,你可能经常通过@ContextConfiguration(classes=…)
指定加载哪些Spring @Configuration
,也可能经常在测试类中使用内嵌@Configuration
类。当测试Spring Boot应用时这些就不需要了,Spring Boot的@*Test
注解会自动搜索主配置类,即使你没有显式定义它。
搜索算法是从包含测试类的package开始搜索,直到发现@SpringBootApplication
或@SpringBootConfiguration
注解的类,只要按恰当的方式组织代码,通常都会发现主配置类。
如果想自定义主配置类,你可以使用一个内嵌的@TestConfiguration
类。不像内嵌的@Configuration
类(会替换应用主配置类),内嵌的@TestConfiguration
类是可以跟应用主配置类一块使用的。
注 Spring测试框架在测试过程中会缓存应用上下文,因此,只要你的测试共享相同的配置(不管是怎么发现的),加载上下文的潜在时间消耗都只会发生一次。